/*
 * @lc app=leetcode.cn id=5 lang=javascript
 *
 * [5] 最长回文子串
 */

// @lc code=start
/**
 * @param {string} s
 * @return {string}
 */
// abab --> aba -> b
// abba --> bb
var longestPalindrome = function(s) {
  if (!s) return ''
  const len = s.length
  if (len < 2) return s
  let star = 0
  let end = 0
  // 查询该中心位置对应的回文串的长度
  function check(left, right) {
    while(left >= 0 && right < len && s[left] === s[right]) {
      left--
      right++
    }
    return right - left - 1
  }
  
  for(let i = 0; i < len; i++) {
    const str1 = check(i, i)
    const str2 = check(i, i+1)
    const len = Math.max(str1, str2) // 取最大长度
    if (len > end - star) { // 该长度大于设置长度时，更改位置
      star = i - Math.floor((len - 1) / 2)
      end = i + Math.floor(len/2)
    }
  }
  return s.substring(star, end + 1) 
};
// @lc code=end

